package src.main.zhuangtai;
/**状态变化类*/
public class Controller {
    public static void main(String[] args) {
        Controller controller=new Controller(new HappyStatus());
        for (int i = 0; i < 3; i++) {
            controller.play();
        }
    }
    // 状态接口声明
    private EmotionStatus emotionStatus;
    // 挨打的次数
    private int playNum = 0;
    // 构造方法
    public Controller(EmotionStatus emotionStatus){
        this.emotionStatus = emotionStatus;
    }
    // get方法  获取当前实例对象情绪
    private void getEmotion(){
        emotionStatus.emotion();
    }
    // 挨打方法 因为挨打次数不同会导致情绪又不同的变化
    public void play(){
        if(playNum == 1){
            emotionStatus = new AngryEmotion();
        }
        if(playNum == 2){
            emotionStatus = new SadEmotion();
        }
        playNum ++;
        emotionStatus.emotion();
    }
}

/**
 * 状态接口
 */
  interface EmotionStatus {
    // 情绪方法
    void emotion();
}


/**
 * 实现状态接口 生气类
 */
  class AngryEmotion implements EmotionStatus {
    // 生气情绪
    @Override
    public void emotion() {
        System.out.println("非常生气！逐渐失控！");
    }
}


/**
 * 开心类 实现状态接口
 */
  class HappyStatus implements EmotionStatus {
    // 开心方法
    @Override
    public void emotion() {
        System.out.println("很开心！跟你一起玩！");
    }
}


/**
 * 实现状态接口 伤心状态类
 */
  class SadEmotion implements EmotionStatus {
    // 伤心情绪方法
    @Override
    public void emotion() {
        System.out.println("想哭！嚎啕大哭！");
    }
}